home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / gui / muibuilderv11.lha / muibuilder / mb / e / click / Click.e < prev    next >
Text File  |  1994-03-07  |  4KB  |  117 lines

  1. /******************************************************************************
  2.     Here is an example of an "environnement file". All you have to do, si to
  3. fill it with :
  4.     - use MUIBuilder+GenCodeE to generate the create_app() function
  5.     - add the code for your application !!!
  6. ******************************************************************************/
  7.  
  8. OPT OSVERSION=37
  9.  
  10.     /* Module definitions */
  11. MODULE 'muimaster', 'libraries/mui'
  12. MODULE 'utility/tagitem', 'utility/hooks'
  13. MODULE 'intuition/classes', 'intuition/classusr'
  14.  
  15.     /* Error handling */
  16. ENUM NO_LIBRARY, MUI_APPLICATION_FAILURE
  17. RAISE   NO_LIBRARY              IF OpenLibrary()=NIL,
  18.         MUI_APPLICATION_FAILURE IF Mui_NewObjectA()=NIL
  19.  
  20.     /* Constant definitions */
  21. CONST MUI_TRUE = 1
  22.  
  23.     /* Global variables */
  24. /*MUIB*/ DEF app, wi_try, tx_label_0, bt_1stbutton, bt_2ndbutton, bt_3rdbutton
  25. /*MUIB*/ DEF stR_TX_label_0 : PTR TO CHAR
  26.  
  27.  
  28.     /* Main procedure */
  29. PROC main() HANDLE
  30.  
  31.     DEF signal, result_DoMethod, running = TRUE
  32.  
  33.     muimasterbase := OpenLibrary('muimaster.library', 0)
  34.     create_app()
  35.  
  36.     /* Notify : close gadget => end of application */
  37.     doMethod( wi_try, [ MUIM_Notify, MUIA_Window_CloseRequest, MUI_TRUE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
  38.  
  39.     /* Open the window */
  40.     set( wi_try, MUIA_Window_Open , MUI_TRUE )
  41.  
  42.     WHILE running
  43.         result_DoMethod := doMethod( app, [ MUIM_Application_Input, {signal} ] )
  44.         SELECT result_DoMethod
  45.             CASE MUIV_Application_ReturnID_Quit
  46.                 running := FALSE
  47.         ENDSELECT
  48.         IF (running AND signal) THEN Wait( signal )
  49.     ENDWHILE
  50.  
  51.     Mui_DisposeObject( app )
  52.     CloseLibrary( muimasterbase )
  53.  
  54. EXCEPT
  55.     SELECT exception
  56.         CASE NO_LIBRARY
  57.         CASE MUI_APPLICATION_FAILURE
  58.     ENDSELECT
  59. ENDPROC
  60.  
  61.  
  62.     /* Procedure generated by GenCodeE which creates your application */
  63. PROC create_app()
  64.     stR_TX_label_0 := '\e8\ecClick on buttons'
  65.  
  66.     app := ApplicationObject,
  67.         MUIA_Application_Author, 'Eric Totel',
  68.         MUIA_Application_Base, 'CLICK',
  69.         MUIA_Application_Title, 'Click',
  70.         MUIA_Application_Version, '$VER : Click 1.0',
  71.         MUIA_Application_Copyright, 'Eric Totel 1994',
  72.         MUIA_Application_Description, 'just a demo !!!',
  73.         SubWindow, wi_try := WindowObject,
  74.             MUIA_Window_Title, 'Click !!!',
  75.             MUIA_Window_ID, MAKE_ID( "0", "W", "I", "N" ),
  76.             WindowContents, GroupObject,
  77.                 Child, tx_label_0 := TextObject,
  78.                     MUIA_Background, 131,
  79.                     MUIA_Text_Contents, stR_TX_label_0,
  80.                     MUIA_Text_SetMax, 0,
  81.                     MUIA_Text_SetMin, 1,
  82.                     MUIA_Frame, 9,
  83.                 End,
  84.                 Child, GroupObject,
  85.                     MUIA_Group_Horiz, MUI_TRUE,
  86.                     MUIA_Group_SameWidth, MUI_TRUE,
  87.                     Child, bt_1stbutton := KeyButton( 'Button 1', "1" ),
  88.                     Child, bt_2ndbutton := KeyButton( 'Button 2', "2" ),
  89.                     Child, bt_3rdbutton := KeyButton( 'Button 3', "3" ),
  90.                 End,
  91.             End,
  92.         End,
  93.     End
  94. ENDPROC
  95.  
  96.  
  97.     /* DoMethod() function */
  98. PROC doMethod( obj:PTR TO object, msg:PTR TO msg )
  99.  
  100.     DEF h:PTR TO hook, o:PTR TO object, dispatcher
  101.  
  102.     IF obj
  103.         o := obj-SIZEOF object     /* instance data is to negative offset */
  104.         h := o.class
  105.         dispatcher := h.entry      /* get dispatcher from hook in iclass */
  106.         MOVEA.L h,A0
  107.         MOVEA.L msg,A1
  108.         MOVEA.L obj,A2           /* probably should use CallHookPkt, but the */
  109.         MOVEA.L dispatcher,A3    /*   original code (DoMethodA()) doesn't. */
  110.         JSR (A3)                 /* call classDispatcher() */
  111.         MOVE.L D0,o
  112.         RETURN o
  113.     ENDIF
  114.  
  115. ENDPROC NIL
  116.  
  117.